package com.example.tys.oomdata.sqLiteData;

import android.support.annotation.NonNull;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * @author tys
 * @date 2018/3/9
 */

public class DataAnnotation {


    /**
     * 设置表名
     */
    @Target(ElementType.TYPE)
    @Retention(RUNTIME)
    public @interface TableName {
        @NonNull
        String name();
    }


    /**
     * 设置主键
     * 不要写value = false的情况，没有判断。
     */
    @Target(ElementType.FIELD)
    @Retention(RUNTIME)
    public @interface PrimaryKey {
        boolean value() default true;
    }

    /**
     * 不允许为null
     */
    @Target(ElementType.FIELD)
    @Retention(RUNTIME)
    public @interface NotNull {
        boolean value() default true;
    }


    /**
     * 确定字段值唯一，允许空字符(不设置值)重复出现,但是没有意义 删除不了
     */
    @Target(ElementType.FIELD)
    @Retention(RUNTIME)
    public @interface Unique {
        boolean value() default true;
    }

    /**
     * 默认值
     */
    @Target(ElementType.FIELD)
    @Retention(RUNTIME)
    public @interface Default {
        String value();
    }

    /**
     * 在数据库中 字段名称
     */
    @Target(ElementType.FIELD)
    @Retention(RUNTIME)
    public @interface InDbName {
        String value();
    }
}


